<?php

require_once 'DAO/Banco.php';
require_once 'DAO/DaoRepublica.php';
require_once 'DAO/DaoUsuario.php';
require_once 'Model/UsuarioRepublica.php';

class DaoUsuarioRepublica extends Banco{
    function getUsuariosRepublica($codigoRepublica) {
        $usuarios = array();
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("SELECT USUREP_CODUSUARIO, USUREP_CODREPUBLICA, USUREP_PRINCIPAL, USUREP_MORANDO FROM TB_USUARIO_REPUBLICA WHERE USUREP_CODREPUBLICA=? AND USUREP_MORANDO='S';")) {
            $sql->bind_param('i',$codigoRepublica);
            $sql->execute();
            $sql->bind_result($usu, $rep, $principal,$morando);
            while ($sql->fetch()) {
                $usuario = new UsuarioRepublica();
                $du = new DaoUsuario();
                $dr = new DaoRepublica();
                $usuario->setMorando($morando);
                $usuario->setPrincipal($principal);
                $usuario->setRepublica($dr->getRepublica($rep));
                $usuario->setUsuario($du->getUsuario($usu));
                $usuarios[] = (object)$usuario;
            }
        }
        return $usuarios;
    }
    
    function getRepublicaUsuario($codigoUsuario) {
        $republica = NULL;
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("SELECT USUREP_CODUSUARIO, USUREP_CODREPUBLICA, USUREP_PRINCIPAL, USUREP_MORANDO FROM TB_USUARIO_REPUBLICA WHERE USUREP_CODUSUARIO=? AND USUREP_MORANDO='S';")) {
            $sql->bind_param('i',$codigoUsuario);
            $sql->execute();
            $sql->bind_result($usu, $rep, $principal,$morando);
            while ($sql->fetch()) {
                $republica = new UsuarioRepublica();
                $du = new DaoUsuario();
                $dr = new DaoRepublica();
                $republica->setMorando($morando);
                $republica->setPrincipal($principal);
                $republica->setRepublica($dr->getRepublica($rep));
                $republica->setUsuario($du->getUsuario($usu));
            }
        }
        return $republica;
    }
    
    function addUsuarioRepublica(UsuarioRepublica $usuarioRepublica) {
        $principal = $usuarioRepublica->getPrincipal();
        if(is_a($usuarioRepublica->getRepublica(), 'Republica')){
            $republica = $usuarioRepublica->getRepublica()->getCodigo();
        }else{
            $republica = NULL;
        }
        if(is_a($usuarioRepublica->getUsuario(), 'Usuario')){
            $usuario = $usuarioRepublica->getUsuario()->getCodigo();
        }else{
            $usuario = NULL;
        }
        Banco::conecta();
        $banco = Banco::getBanco();
        $lastid = -1;
        if ($sql = $banco->prepare("INSERT INTO TB_USUARIO_REPUBLICA VALUES(?, ?, ?, default)")) {
            $sql->bind_param('iis',$usuario,$republica,$principal);
            $sql->execute();
            //echo $sql->error;
            $lastid = $sql->insert_id;
            $sql->close();
        }else{
            //echo $banco->error;
            return -1;
        }
    }
    
    function removeUsuarioRepublica(UsuarioRepublica $usuarioRepublica) {
        $principal = $usuarioRepublica->getPrincipal();
        $usuario = NULL;
        $republica = NULL;
        if(is_a($usuarioRepublica->getRepublica(), 'Republica')){
            $republica = $usuarioRepublica->getRepublica()->getCodigo();
        }
        if(is_a($usuarioRepublica->getUsuario(), 'Usuario')){
            $usuario = $usuarioRepublica->getUsuario()->getCodigo();
        }
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("UPDATE TB_USUARIO_REPUBLICA SET USUREP_MORANDO='N' WHERE USUREP_CODUSUARIO=? AND USUREP_CODREPUBLICA=?;")) {
            $sql->bind_param('ii',$usuario,$republica);
            $sql->execute();
            $sql->close();
        }
    }
    
    function removeUsuariosByRepublica($codRepublica) {
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("UPDATE TB_USUARIO_REPUBLICA SET USUREP_MORANDO='N' WHERE USUREP_CODREPUBLICA=?;")) {
            $sql->bind_param('i',$codRepublica);
            $sql->execute();
            $sql->close();
        }
    }
}

?>
